From: Jasper St. Pierre Date: Mon, 28 May 2012 21:21:02 +0000 (-0400) Subject: extensionUtils: Support subdirectories in getCurrentExtension X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~6535 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=65d23fb9a3ecc84e04d4c8a59df4c066d78e73c4;p=gnome-shell.git extensionUtils: Support subdirectories in getCurrentExtension Some extensions may have complex layouts with multiple subdirectories. Currently, getCurrentExtension doesn't support this, as it uses a regex and assume's that the last path's component's parent is all that's needed. Fix this. https://bugzilla.gnome.org/show_bug.cgi?id=677001 --- diff --git a/js/misc/extensionUtils.js b/js/misc/extensionUtils.js index 82ded0125..77a49d5b5 100644 --- a/js/misc/extensionUtils.js +++ b/js/misc/extensionUtils.js @@ -40,13 +40,18 @@ function getCurrentExtension() { throw new Error('Could not find current extension'); let path = match[1]; - let uuid = GLib.path_get_basename(GLib.path_get_dirname(path)); - - let extension = extensions[uuid]; - if (extension === undefined) - throw new Error('Could not find current extension'); + let file = Gio.File.new_for_path(path); + + // Walk up the directory tree, looking for an extesion with + // the same UUID as a directory name. + while (file != null) { + let extension = extensions[file.get_basename()]; + if (extension !== undefined) + return extension; + file = file.get_parent(); + } - return extension; + throw new Error('Could not find current extension'); } /**